home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Programming / LEDA / incl / LEDA.020+881 / stack.h < prev    next >
C/C++ Source or Header  |  1994-08-05  |  1KB  |  52 lines

  1. /*******************************************************************************
  2. +
  3. +  LEDA  3.1c
  4. +
  5. +
  6. +  stack.h
  7. +
  8. +
  9. +  Copyright (c) 1994  by  Max-Planck-Institut fuer Informatik
  10. +  Im Stadtwald, 6600 Saarbruecken, FRG     
  11. +  All rights reserved.
  12. *******************************************************************************/
  13.  
  14.  
  15. #ifndef LEDA_STACK_H
  16. #define LEDA_STACK_H
  17.  
  18. #include <LEDA/basic.h>
  19. #include <LEDA/impl/slist.h>
  20.  
  21. //------------------------------------------------------------------------------
  22. // stacks                                                                
  23. //------------------------------------------------------------------------------
  24.  
  25.  
  26. template<class type>
  27.  
  28. class _CLASSTYPE stack : private SLIST
  29. {
  30.   void copy_el(GenPtr& x)  const { x=Copy(ACCESS(type,x)); }
  31.   void clear_el(GenPtr& x) const { Clear(ACCESS(type,x)); }
  32.  
  33. public:
  34.  
  35.   stack() {}
  36.   stack(const stack<type>& S) : SLIST(S) {}
  37.  ~stack() { clear(); }
  38.  
  39.   void push(type x)  { SLIST::push(Copy(x)); }
  40.   type top()   const { return ACCESS(type,SLIST::head());}
  41.   type pop()         { type x=top(); SLIST::pop(); return x; }
  42.   int  size()  const { return SLIST::length(); }
  43.   int  empty() const { return SLIST::empty(); }
  44.   void clear()       { SLIST::clear(); }
  45.  
  46.   stack<type>& operator=(const stack<type>& S) 
  47.                      { return (stack<type>&)SLIST::operator=(S); }
  48. };
  49.  
  50. #endif
  51.